Account for the fact that the border width is _outside_ the window. (Fixes
authorOwen Taylor <otaylor@redhat.com>
Thu, 31 May 2001 19:11:16 +0000 (19:11 +0000)
committerOwen Taylor <otaylor@src.gnome.org>
Thu, 31 May 2001 19:11:16 +0000 (19:11 +0000)
Thu May 31 12:43:57 2001  Owen Taylor  <otaylor@redhat.com>

* gtk/gtkoptionmenu.c: Account for the fact that the border
width is _outside_ the window. (Fixes #54585, bug found
        by Bastien Nocera.)

ChangeLog
ChangeLog.pre-2-0
ChangeLog.pre-2-10
ChangeLog.pre-2-2
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkoptionmenu.c

index 5dfba01085ef0172eccf435c9792162f6095d83d..10675e5e8858d275079ea14f2a80501db83102c2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Thu May 31 12:43:57 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkoptionmenu.c: Account for the fact that the border
+       width is _outside_ the window. (Fixes #54585, bug found
+        by Bastien Nocera.)
+
 Wed May 30 15:56:30 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtksettings.c (gtk_settings_get_property): Validate
index 5dfba01085ef0172eccf435c9792162f6095d83d..10675e5e8858d275079ea14f2a80501db83102c2 100644 (file)
@@ -1,3 +1,9 @@
+Thu May 31 12:43:57 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkoptionmenu.c: Account for the fact that the border
+       width is _outside_ the window. (Fixes #54585, bug found
+        by Bastien Nocera.)
+
 Wed May 30 15:56:30 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtksettings.c (gtk_settings_get_property): Validate
index 5dfba01085ef0172eccf435c9792162f6095d83d..10675e5e8858d275079ea14f2a80501db83102c2 100644 (file)
@@ -1,3 +1,9 @@
+Thu May 31 12:43:57 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkoptionmenu.c: Account for the fact that the border
+       width is _outside_ the window. (Fixes #54585, bug found
+        by Bastien Nocera.)
+
 Wed May 30 15:56:30 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtksettings.c (gtk_settings_get_property): Validate
index 5dfba01085ef0172eccf435c9792162f6095d83d..10675e5e8858d275079ea14f2a80501db83102c2 100644 (file)
@@ -1,3 +1,9 @@
+Thu May 31 12:43:57 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkoptionmenu.c: Account for the fact that the border
+       width is _outside_ the window. (Fixes #54585, bug found
+        by Bastien Nocera.)
+
 Wed May 30 15:56:30 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtksettings.c (gtk_settings_get_property): Validate
index 5dfba01085ef0172eccf435c9792162f6095d83d..10675e5e8858d275079ea14f2a80501db83102c2 100644 (file)
@@ -1,3 +1,9 @@
+Thu May 31 12:43:57 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkoptionmenu.c: Account for the fact that the border
+       width is _outside_ the window. (Fixes #54585, bug found
+        by Bastien Nocera.)
+
 Wed May 30 15:56:30 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtksettings.c (gtk_settings_get_property): Validate
index 5dfba01085ef0172eccf435c9792162f6095d83d..10675e5e8858d275079ea14f2a80501db83102c2 100644 (file)
@@ -1,3 +1,9 @@
+Thu May 31 12:43:57 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkoptionmenu.c: Account for the fact that the border
+       width is _outside_ the window. (Fixes #54585, bug found
+        by Bastien Nocera.)
+
 Wed May 30 15:56:30 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtksettings.c (gtk_settings_get_property): Validate
index 5dfba01085ef0172eccf435c9792162f6095d83d..10675e5e8858d275079ea14f2a80501db83102c2 100644 (file)
@@ -1,3 +1,9 @@
+Thu May 31 12:43:57 2001  Owen Taylor  <otaylor@redhat.com>
+
+       * gtk/gtkoptionmenu.c: Account for the fact that the border
+       width is _outside_ the window. (Fixes #54585, bug found
+        by Bastien Nocera.)
+
 Wed May 30 15:56:30 2001  Owen Taylor  <otaylor@redhat.com>
 
        * gtk/gtksettings.c (gtk_settings_get_property): Validate
index 197fb56ad03b8a8181bcb3e279a9547f028c5b61..cd90b378306d702447450dd14903cfccb40a1b87 100644 (file)
@@ -397,30 +397,26 @@ gtk_option_menu_size_allocate (GtkWidget     *widget,
   GtkWidget *child;
   GtkAllocation child_allocation;
   GtkOptionMenuProps props;
+  gint border_width;
     
-  g_return_if_fail (widget != NULL);
-  g_return_if_fail (GTK_IS_OPTION_MENU (widget));
-  g_return_if_fail (allocation != NULL);
-
   gtk_option_menu_get_props (GTK_OPTION_MENU (widget), &props);
+  border_width = GTK_CONTAINER (widget)->border_width;
 
   widget->allocation = *allocation;
   if (GTK_WIDGET_REALIZED (widget))
     gdk_window_move_resize (widget->window,
-                           allocation->x, allocation->y,
-                           allocation->width, allocation->height);
+                           allocation->x + border_width, allocation->y + border_width,
+                           allocation->width - border_width * 2, allocation->height - border_width * 2);
 
   child = GTK_BIN (widget)->child;
   if (child && GTK_WIDGET_VISIBLE (child))
     {
-      child_allocation.x = (GTK_CONTAINER (widget)->border_width +
-                           GTK_WIDGET (widget)->style->xthickness) + 1;
-      child_allocation.y = (GTK_CONTAINER (widget)->border_width +
-                           GTK_WIDGET (widget)->style->ythickness) + 1;
-      child_allocation.width = MAX (1, (gint)allocation->width - child_allocation.x * 2 -
+      child_allocation.x = GTK_WIDGET (widget)->style->xthickness + 1;
+      child_allocation.y = GTK_CONTAINER (widget)->border_width + 1;
+      child_allocation.width = MAX (1, (gint)allocation->width - child_allocation.x * 2 - border_width * 2 -
                                    props.indicator_size.width - props.indicator_spacing.left - props.indicator_spacing.right -
                                    CHILD_LEFT_SPACING - CHILD_RIGHT_SPACING - 2);
-      child_allocation.height = MAX (1, (gint)allocation->height - child_allocation.y * 2 -
+      child_allocation.height = MAX (1, (gint)allocation->height - child_allocation.y * 2 - border_width * 2 -
                                     CHILD_TOP_SPACING - CHILD_BOTTOM_SPACING - 2);
       child_allocation.x += CHILD_LEFT_SPACING;
       child_allocation.y += CHILD_TOP_SPACING;
@@ -435,6 +431,7 @@ gtk_option_menu_paint (GtkWidget    *widget,
 {
   GdkRectangle button_area;
   GtkOptionMenuProps props;
+  gint border_width;
 
   g_return_if_fail (widget != NULL);
   g_return_if_fail (GTK_IS_OPTION_MENU (widget));
@@ -442,12 +439,11 @@ gtk_option_menu_paint (GtkWidget    *widget,
 
   if (GTK_WIDGET_DRAWABLE (widget))
     {
-      gint border_width = GTK_CONTAINER (widget)->border_width;
-       
+      border_width = GTK_CONTAINER (widget)->border_width;
       gtk_option_menu_get_props (GTK_OPTION_MENU (widget), &props);
 
-      button_area.x = border_width;
-      button_area.y = border_width;
+      button_area.x = 0;
+      button_area.y = 0;
       button_area.width = widget->allocation.width - 2 * border_width;
       button_area.height = widget->allocation.height - 2 * border_width;